/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.python.pydev.ui.search;
import java.util.List;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
/**
* Dialog telling the user that files are out of sync or matches
* are stale and asks for confirmation to refresh/search again
* @since 3.0
*/
public class SearchAgainConfirmationDialog extends Dialog {
private List fOutOfSync;
private List fOutOfDate;
private ILabelProvider fLabelProvider;
private class ProxyLabelProvider extends LabelProvider {
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
*/
public Image getImage(Object element) {
if (fLabelProvider != null)
return fLabelProvider.getImage(element);
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
*/
public String getText(Object element) {
if (fLabelProvider != null)
return fLabelProvider.getText(element);
return null;
}
}
public SearchAgainConfirmationDialog(Shell shell, ILabelProvider labelProvider, List outOfSync, List outOfDate) {
super(shell);
fOutOfSync = outOfSync;
fOutOfDate = outOfDate;
fLabelProvider = labelProvider;
setShellStyle(getShellStyle() | SWT.RESIZE);
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createDialogArea(Composite parent) {
Composite result = (Composite) super.createDialogArea(parent);
if (fOutOfSync.size() > 0) {
createLabel(result, SearchMessages.SearchAgainConfirmationDialog_outofsync_message);
createLabel(result, SearchMessages.SearchAgainConfirmationDialog_outofsync_label);
createTableViewer(fOutOfSync, result);
} else {
createLabel(result, SearchMessages.SearchAgainConfirmationDialog_stale_message);
}
createLabel(result, SearchMessages.SearchAgainConfirmationDialog_stale_label);
createTableViewer(fOutOfDate, result);
return result;
}
private void createLabel(Composite parent, String text) {
Label message = new Label(parent, SWT.WRAP);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = convertWidthInCharsToPixels(70);
message.setLayoutData(gd);
message.setText(text);
}
private TableViewer createTableViewer(List input, Composite result) {
TableViewer viewer = new TableViewer(result);
viewer.setContentProvider(new ArrayContentProvider());
viewer.setLabelProvider(new ProxyLabelProvider());
viewer.setInput(input);
GridData gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = convertWidthInCharsToPixels(70);
gd.heightHint = convertHeightInCharsToPixels(5);
viewer.getControl().setLayoutData(gd);
return viewer;
}
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText(SearchMessages.SearchAgainConfirmationDialog_title);
}
}